package cn.zhuzicc.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author zhaoxiang
 * @version 1.0
 * @description 自定义注解学习
 * @Date 2021/4/24 11:26
 */
public class CustomAnnotation {
    // 注解可以显示赋值，如果没有默认值就必须给注解赋值
    @MyAnnotation(age = 20)
    public void test1(){}

    @MyAnnotation2("value")
    public void test2(){}

}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    // 注解的参数格式： 参数类型 + 参数名()
    String name() default "";

    int age();

    int id() default -1; // 如果默认值为-1，代表不存在

    String[] schools() default {"清华大学", "北京大学"};
}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{

    // 只有当参数名称是value时，才可省略不写
    String value();
}
